#ifndef MUSICPLAYER_H
#define MUSICPLAYER_H

#include <string>
#include <vector>

class MusicPlayer 
{
public:
    /**
     * @brief 构造函数
     * @param playerPath mplayer可执行文件路径，默认为"/bin/mplayer"
     */
    explicit MusicPlayer(const std::string& playerPath = "/bin/mplayer");
    
    /**
     * @brief 析构函数
     */
    ~MusicPlayer();

    /**
     * @brief 播放音频文件
     * @param filePath 音频文件路径
     * @return 成功返回true，失败返回false
     */
    bool play(const std::string& filePath);

    /**
     * @brief 停止当前播放
     */
    void stop();

    /**
     * @brief 暂停当前播放
     */
    void pause();

    /**
     * @brief 继续播放
     */
    void resume();

    /**
     * @brief 设置音量
     * @param volume 音量值(0-100)
     */
    void setVolume(int volume);

    /**
     * @brief 检查是否正在播放
     * @return 正在播放返回true，否则返回false
     */
    bool isPlaying() const;

    bool isFinished() const;//检查播放是否完成

private:
    std::string m_playerPath;      // mplayer路径
    pid_t m_playerPid;             // mplayer进程ID
    bool m_isPlaying;              // 播放状态标志
    std::string m_currentFile;     // 当前播放文件

    // 执行shell命令并获取输出
    std::vector<std::string> executeCommand(const std::string& cmd);
};

#endif // MUSICPLAYER_H
